////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                            //
//                                                         WNProject                                                          //
//                                                                                                                            //
//            This file is distributed under the BSD 2-Clause open source license. See License.txt for details.               //
//                                                                                                                            //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#pragma once

#ifndef __WN_MATH_INTERNAL_ARM_NEON_BASIC_INL__
#define __WN_MATH_INTERNAL_ARM_NEON_BASIC_INL__

#ifndef __WN_MATH_BASIC_H__
    #error "ARM/NEON/gnuc/WNBasic.inl should never be included directly. Please include WNBasic.h instead"
#elif !defined _WN_ARM
    #error "ARM/NEON/gnuc/WNBasic.inl has been included on a non ARM platform. Please rectify this."
#elif !defined __WN_MATH_ENABLE_EXTENSIONS
    #error "ARM/NEON/gnuc/WNBasic.inl has been included when extensions are disabled. Please rectify this."
#elif !defined __WN_MATH_NEON_ALLOWED
    #error "ARM/NEON/gnuc/WNBasic.inl has been included when NEON is not allowed. Please rectify this."
#elif !defined _WN_GNUC
    #error "ARM/NEON/gnuc/WNBasic.inl has been included when not compiling using a gnuc compiler. Please rectify this."
#endif

namespace WNMath {
    namespace __WNInternal {
        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNRoundNEON(const WN_FLOAT32& _number) {

        }

        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNCeilNEON(const WN_FLOAT32& _number) {

        }

        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNFloorNEON(const WN_FLOAT32& _number) {

        }

        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNTruncNEON(const WN_FLOAT32& _number) {

        }

        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNSqrtNEON(const WN_FLOAT32& _number) {

        }

        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNInvSqrtNEON(const WN_FLOAT32& _number) {

        }

        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNMinNEON(const WN_FLOAT32& _first, const WN_FLOAT32& _second) {

        }

        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNMaxNEON(const WN_FLOAT32& _first, const WN_FLOAT32& _second) {

        }

        __WN_MATH_NEON_INLINE WN_FLOAT32 __WNClampNEON(const WN_FLOAT32& _number, const WN_FLOAT32& _min, const WN_FLOAT32& _max) {

        }
    }
}

#endif // __WN_MATH_INTERNAL_ARM_NEON_BASIC_INL__